home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_asm / objxref / xrplib.asm < prev    next >
Assembly Source File  |  1986-04-25  |  3KB  |  128 lines

  1.  PAGE    81,128
  2.  TITLE    XRPLIB    - Process Library file
  3.  SUBTTL    V1.0 - May 1986    - Cross    Reference Facility
  4. ;
  5. ;=============================================================================|
  6. ;         Copyright 1986 - Dan Daetwyler - Springdale, AR 72764          |
  7. ;=============================================================================|
  8.     .SALL
  9. ;
  10. DATA    SEGMENT    BYTE PUBLIC 'DATA'
  11. ;
  12.     EXTRN    FHAN:WORD,FBUF:BYTE,RCODE:BYTE,RLEN:WORD
  13.     EXTRN    VALID:BYTE,EMSG:BYTE,IMSG:BYTE,IMX:BYTE
  14. ;
  15. DATA    ENDS
  16. ;
  17. CODE    SEGMENT    BYTE PUBLIC 'CODE'
  18.     ASSUME    CS:CODE,DS:DATA,ES:DATA
  19. ;
  20. ;==============================================================================
  21. ; Entry    Point    XRPLIB                                  |
  22. ;==============================================================================
  23. ;                                          |
  24. ; This procedure loads and processes ALL of the    object files contained within |
  25. ; the library opened by    the caller.  Note that the records that    are processed |
  26. ; are actually processed by subordinate    modules, dependent upon    the type of   |
  27. ; logical record found.     Note also that    the "scan" for the start of the          |
  28. ; next object module is    a bit "hokey".                          |
  29. ;                                          |
  30. ; Entry    conventions:    Expects    the library to have been opened    (FHAN).          |
  31. ;                                          |
  32. ; Returns:        None.  Displays    messages on bad    data.              |
  33. ;                                          |
  34. ;==============================================================================
  35. ;
  36.     EXTRN    XRHEDR:NEAR,XREXTN:NEAR,XRPUBL:NEAR,CVRT:NEAR
  37. ;
  38.     PUBLIC    XRPLIB
  39. ;
  40. XRPLIB    PROC    NEAR
  41. LP:    MOV    BX,FHAN            ;Load file handle
  42.     MOV    CX,1
  43.     MOV    DX,OFFSET RCODE
  44.     MOV    AH,3FH
  45.     INT    21H            ;Read next file    character
  46.     CMP    AX,CX
  47.     JNE    EXIT
  48.     CMP    RCODE,0F1H
  49.     JE    DONE
  50.     CMP    RCODE,80H
  51.     JNE    LP            ;Scan for start    of module
  52.     MOV    CX,2
  53.     MOV    DX,OFFSET RLEN
  54.     MOV    AH,3FH
  55.     INT    21H            ;Read in record    length
  56.     CMP    AX,CX
  57.     JE    JOIN            ;Do normal process
  58. EXIT:    MOV    DX,OFFSET EMSG
  59.     MOV    AH,9            ;No end    record message
  60.     INT    21H
  61. DONE:    RET
  62. SCND:    MOV    BX,FHAN
  63.     MOV    DX,OFFSET RCODE
  64.     MOV    CX,3
  65.     MOV    AH,3FH
  66.     INT    21H
  67.     CMP    AX,CX
  68.     JNE    EXIT
  69. JOIN:    MOV    CX,RLEN
  70.     MOV    DX,OFFSET FBUF
  71.     MOV    AH,3FH
  72.     CMP    CX,1024
  73.     JBE    OK
  74.     MOV    CX,1024
  75.     INT    21H            ;Record    is too long
  76.     MOV    CX,RLEN
  77.     SUB    CX,1024
  78.     MOV    AH,3FH
  79.     INT    21H
  80.     JMP    SCND            ;Skip record
  81. OK:    INT    21H            ;Load record
  82.     CMP    AX,CX
  83.     JNE    EXIT
  84.     MOV    SI,DX
  85.     MOV    CX,RLEN
  86.     MOV    AL,RCODE
  87.     CMP    AL,80H
  88.     JNE    T1
  89.     CALL    XRHEDR
  90.     JMP    SCND
  91. T1:    CMP    AL,8AH
  92.     JNE    T2
  93.     JMP    LP            ;End of    object module
  94. T2:    CMP    AL,8CH
  95.     JNE    T3
  96.     CALL    XREXTN
  97.     JMP    SCND
  98. T3:    CMP    AL,90H
  99.     JNE    T4
  100.     CALL    XRPUBL
  101.     JMP    SCND
  102. T4:    CMP    AL,0F1H
  103.     JNE    T5
  104.     RET                ;End of    library
  105. T5:    MOV    DI,OFFSET VALID
  106.     MOV    CX,11
  107.     REPNE    SCASB            ;Check for a valid code
  108.     JE    SCND
  109.     XOR    AH,AH
  110.     MOV    CL,4
  111.     SHL    AX,CL
  112.     SHR    AL,CL
  113.     XCHG    AH,AL
  114.     CALL    CVRT
  115.     MOV    IMX,AL
  116.     MOV    AL,AH
  117.     CALL    CVRT
  118.     MOV    IMX+1,AL
  119.     MOV    DX,OFFSET IMSG
  120.     MOV    AH,9
  121.     INT    21H            ;Bad record type message
  122.     JMP    SCND
  123. XRPLIB    ENDP
  124. ;
  125. CODE    ENDS
  126. ;
  127.     END
  128.